小波去噪matlab程序代码 |
您所在的位置:网站首页 › campo burgo 红酒 › 小波去噪matlab程序代码 |
1、小波去噪实现步骤
(1)二维信号的小波分解。选择一个小波和小波分解的层次N,然后计算信号s到第N层的分解。 (2)对高频系数进行阈值量化。对于从1~N的每一层,选择一个阈值,并对这一层的高频系数进行软阈值量化处理。 (3)二维小波重构。根据小波分解的第N层的低频系数和经过修改的从第一层到第N的各层高频系数,计算二维信号的小波重构 2、Matlab函数介绍(1)wavedec2函数 该函数用于对多尺度二维小波进行分解,其常用调用格式: [C,S] = wavedec2(X,N,‘wname’):用小波函数wname对信号X在尺度N上的二维分解,N是严格正整数。 (2)wrcoef2函数 该函数用于对二维小波系数进行单支重构,其调用格式: X = wrcoef2(‘type’,C,S,‘wname’,N):用指定的小波函数wname进行N尺度重构。当type = ‘a’时,仅对信号的低频部分进行重构,此时N可以为0;当type = ‘h’(或‘v’/‘d’)时,对信号(水平、垂直、对角)的高频进行重构,N为严格正整数。 (3)wthcoef2函数 该函数用于对二维信号的小波系数阈值进行处理,常用调用格式: NC = wthcoef2(‘type’,C,S,N,T,SORH):返回经过小波分解结构[C,S]进行处理后的新的小波分解向量NC,[NC,S]即构成一个新的小波分解结构。N是一个包含高频尺度的向量,T是相应的阈值,且N和T长度须相等。返回‘type’(水平、垂直、对角线)方向的小波分解向量NC。参数SORH用来对阈值方式进行选择,当SORH = ‘s’时,为软阈值,当SORH = ‘h’时,为硬阈值。 3、小波去噪Matlab实例实例1: clear all; load facets; subplot(2,2,1);image(X); colormap(map); xlabel(‘(a)原始图像’); axis square %产生含噪声图像 init = 2055615866; randn(‘seed’,init); x = X + 50*randn(size(X)); subplot(2,2,2);image(x); colormap(map); xlabel(‘(b)含噪声图像’); axis square %下面进行图像的去噪处理 %用小波函数coif3对x进行2层小波分解 [c,s] = wavedec2(x,2,‘coif3’); %提取小波分解中第一层的低频图像,即实现了低通滤波去噪 %设置尺度向量 n = [1,2]; %设置阈值向量p p = [10.12,23.28]; %对三个方向高频系数进行阈值处理 nc = wthcoef2(‘h’,c,s,n,p,‘s’); nc = wthcoef2(‘v’,nc,s,n,p,‘s’); nc = wthcoef2(‘d’,nc,s,n,p,‘s’); %对新的小波分解结构[c,s]进行重构 x1 = waverec2(nc,s,‘coif3’); subplot(2,2,3);image(x1); colormap(map); xlabel(‘(c)第一次去噪图像’); axis square %对nc再次进行滤波去噪 xx = wthcoef2(‘v’,nc,s,n,p,‘s’); x2 = waverec2(xx,s,‘coif3’); subplot(2,2,4);image(x2); colormap(map); xlabel(‘(d)第二次去噪图像’); axis square《span style=“font-size:14px”》《span style=“font-size:14px”》《span style=“font-size:18px; color:#3366ff”》 实例2: 首先使用函数wnoisest获取噪声方差,然后使用函数wbmpen获取小波去噪阈值,最后使用wdencmp实现信号消噪。 load leleccum; indx = 1:1024; x = leleccum(indx); %产生含噪信号 init = 2055615886; randn(‘seed’,init); nx = x + 18*randn(size(x)); %使用小波函数‘db6’对信号进行3层分解 [c,l] = wavedec(nx,3,‘db6’); %估计尺度1的噪声标准差 sigma = wnoisest(c,l,1); alpha = 2; %获取消噪过程中的阈值 thr = wbmpen(c,l,sigma,alpha); keepapp = 1; %对信号进行消噪 xd = wdencmp(‘gbl’,c,l,‘db6’,3,thr,‘s’,keepapp); subplot(221); plot(x); title(‘原始信号’); subplot(222); plot(nx); title(‘含噪信号’); subplot(223); plot(xd); title(‘消噪后的信号’); 实例3:本例中,对小波分解系数使用函数wthcoef进行阈值处理,然后利用阈值处理后的小波系数进行重构达到去噪目的。 load leleccum; indx = 1:1024; x = leleccum(indx); %产生含噪信号 init = 2055615866; randn(‘seed’,init); nx = x + 18*randn(size(x)); %使用小波函数‘db5’对信号进行3层分解 [c,l] = wavedec(nx,3,‘db5’); %设置尺度向量 n = [1,2,3]; %设置阈值向量 p = [100,90,80]; %对高频系数进行阈值处理 nc = wthcoef(‘d’,c,l,n,p); %对修正后的小波分解结构进行重构 rx = waverec(nc,l,‘db5’); subplot(221); plot(x); title(‘原始信号’); subplot(222); plot(nx); title(‘含噪信号’); subplot(223); plot(rx); title(‘消噪后的信号’); 实例4:本例中,使用一维信号的自动消噪函数wden对信号进行消噪。 load leleccum; indx = 1:1024; x = leleccum(indx); %产生含噪信号 init = 2055615866; randn(‘seed’,init); nx = x + 18*randn(size(x)); %将信号nx使用小波函数‘sym5’分解到第5层 %使用mimimaxi阈值选择系数进行处理,消除噪声信号 lev = 5; xd = wden(nx,‘minimaxi’,‘s’,‘mln’,lev,‘sym5’); subplot(221); plot(x); title(‘原始信号’); subplot(222); plot(nx); title(‘含噪信号’); subplot(223); plot(xd); title(‘消噪后的信号’); |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |